//package com.zdy.ws.ws.service.impl;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.allindata.carbontracking.application.constants.TioConstant;
//import com.allindata.carbontracking.application.dto.tio.MessageOutput;
//import com.allindata.carbontracking.core.enums.DataTypeEnum;
//import com.allindata.carbontracking.core.enums.ResultEnum;
//import com.allindata.carbontracking.core.session.SimpleSession;
//import com.zdy.ws.ws.service.TioWebSocketService;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.stereotype.Service;
//import org.tio.core.Tio;
//import org.tio.websocket.common.WsResponse;
//import org.tio.websocket.starter.TioWebSocketServerBootstrap;
//
//import javax.annotation.Resource;
//
///**
// * <p>
// * websocket 发送实现类
// * </p>
// *
// * @author zdy
// * @date 2021/12/20
// */
//@Slf4j
//@Service
//public class TioWebSocketServiceImpl implements TioWebSocketService {
//
//    @Resource
//    private TioWebSocketServerBootstrap bootstrap;
//    @Resource
//    private SimpleSession userSession;
//
//    /**
//     * 群发所有人
//     *
//     * @param msg 发送消息体
//     **/
//    @Override
//    public void sendAllMessage(Object msg) {
//        MessageOutput output = MessageOutput.builder()
//                .code(ResultEnum.MESSAGE_SUCCESS.getCode())
//                .message(ResultEnum.MESSAGE_SUCCESS.getMsg())
//                .data(msg).build();
//        WsResponse wsResponse = WsResponse.fromText(JSONArray.toJSONString(output), TioConstant.CHARSET);
//        Tio.sendToGroup(bootstrap.getServerTioConfig(), TioConstant.ALL_USER, wsResponse);
//
//    }
//
//    /**
//     * 指定用户发送
//     *
//     * @param userId 用户id
//     * @param msg    消息体
//     * @return 返回失败成功
//     **/
//    @Override
//    public Boolean sendMessage(String userId, Object msg) {
//        MessageOutput output = MessageOutput.builder()
//                .code(ResultEnum.MESSAGE_SUCCESS.getCode())
//                .message(ResultEnum.MESSAGE_SUCCESS.getMsg())
//                .data(msg).build();
//        WsResponse wsResponse = WsResponse.fromText(JSONArray.toJSONString(output), TioConstant.CHARSET);
//        Boolean sendFlag = Tio.sendToUser(bootstrap.getServerTioConfig(), userId, wsResponse);
//        log.info("sendFlag:{}", sendFlag);
//        return sendFlag;
//    }
//
//    /**
//     * 发送设备群聊消息
//     *
//     * @param deviceId 设备ID
//     * @param msg      发送消息体
//     **/
//    @Override
//    public void sendMessageByGroup(String deviceId, Object msg) {
//        JSONObject jsonObject = new JSONObject();
//        jsonObject.put("type", DataTypeEnum.REAL_TIME_DATA.getCode());
//        jsonObject.put("result", msg);
//        MessageOutput output = MessageOutput.builder()
//                .code(ResultEnum.MESSAGE_SUCCESS.getCode())
//                .message(ResultEnum.MESSAGE_SUCCESS.getMsg())
//                .data(jsonObject).build();
//        log.info("发送设备群聊消息:{}", output);
//        WsResponse wsResponse = WsResponse.fromText(JSONObject.toJSONString(output), TioConstant.CHARSET);
//        Tio.sendToGroup(bootstrap.getServerTioConfig(), deviceId, wsResponse);
//    }
//
//
//    /**
//     * 加入设备群聊
//     *
//     * @param lastDeviceId 上一个设备ID
//     * @param deviceId     当前设备ID
//     */
//    @Override
//    public void addDeviceGroup(String lastDeviceId, String deviceId) {
//        //退出上一个设备的群聊
//        if (!StringUtils.isEmpty(lastDeviceId)) {
//            this.removeDeviceGroup(lastDeviceId);
//        }
//        String userId = String.valueOf(userSession.getUserId());
//        Tio.bindGroup(bootstrap.getServerTioConfig(), userId, deviceId);
//    }
//
//
//    /**
//     * 退出设备群聊
//     *
//     * @param deviceId 当前设备ID
//     */
//    @Override
//    public void removeDeviceGroup(String deviceId) {
//        String userId = String.valueOf(userSession.getUserId());
//        Tio.unbindGroup(bootstrap.getServerTioConfig(), userId, deviceId);
//    }
//}
